{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Showcases integrated gradients on CIFAR10 dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This tutorial demonstrates how to apply model interpretability algorithms from Captum library on a simple model and test samples from CIFAR dataset.\n",
    "\n",
    "In this tutorial we build a simple model as described in:\n",
    "https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html#sphx-glr-beginner-blitz-cifar10-tutorial-py\n",
    "\n",
    "Then we use attribution algorithms such as `IntegratedGradients`, `Saliency`, `DeepLift` and `NoiseTunnel` to attribute the label of the image to the input pixels and visualize it.\n",
    "  \n",
    "  **Note:** Before running this tutorial, please install the torchvision, and matplotlib packages."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "%matplotlib inline\n",
    "\n",
    "import torch\n",
    "import torchvision\n",
    "import torchvision.transforms as transforms\n",
    "import torchvision.transforms.functional as TF\n",
    "\n",
    "from torchvision import models\n",
    "\n",
    "from captum.attr import IntegratedGradients\n",
    "from captum.attr import Saliency\n",
    "from captum.attr import DeepLift\n",
    "from captum.attr import NoiseTunnel\n",
    "from captum.attr import visualization as viz"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the cell below we load test and train datasets, define image transformers and supported classification label classes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Files already downloaded and verified\n",
      "Files already downloaded and verified\n"
     ]
    }
   ],
   "source": [
    "transform = transforms.Compose(\n",
    "    [transforms.ToTensor(),\n",
    "     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])\n",
    "\n",
    "trainset = torchvision.datasets.CIFAR10(root='./data', train=True,\n",
    "                                        download=True, transform=transform)\n",
    "trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,\n",
    "                                          shuffle=True, num_workers=2)\n",
    "\n",
    "testset = torchvision.datasets.CIFAR10(root='./data', train=False,\n",
    "                                       download=True, transform=transform)\n",
    "testloader = torch.utils.data.DataLoader(testset, batch_size=4,\n",
    "                                         shuffle=False, num_workers=2)\n",
    "\n",
    "classes = ('plane', 'car', 'bird', 'cat',\n",
    "           'deer', 'dog', 'frog', 'horse', 'ship', 'truck')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We define a classification network based on the architecture proposed in the following tutorial:\n",
    "https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html#sphx-glr-beginner-blitz-cifar10-tutorial-py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "\n",
    "\n",
    "class Net(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(Net, self).__init__()\n",
    "        self.conv1 = nn.Conv2d(3, 6, 5)\n",
    "        self.pool1 = nn.MaxPool2d(2, 2)\n",
    "        self.pool2 = nn.MaxPool2d(2, 2)\n",
    "        self.conv2 = nn.Conv2d(6, 16, 5)\n",
    "        self.fc1 = nn.Linear(16 * 5 * 5, 120)\n",
    "        self.fc2 = nn.Linear(120, 84)\n",
    "        self.fc3 = nn.Linear(84, 10)\n",
    "        self.relu1 = nn.ReLU()\n",
    "        self.relu2 = nn.ReLU()\n",
    "        self.relu3 = nn.ReLU()\n",
    "        self.relu4 = nn.ReLU()\n",
    "\n",
    "    def forward(self, x):\n",
    "        x = self.pool1(self.relu1(self.conv1(x)))\n",
    "        x = self.pool2(self.relu2(self.conv2(x)))\n",
    "        x = x.view(-1, 16 * 5 * 5)\n",
    "        x = self.relu3(self.fc1(x))\n",
    "        x = self.relu4(self.fc2(x))\n",
    "        x = self.fc3(x)\n",
    "        return x\n",
    "\n",
    "\n",
    "net = Net()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch.optim as optim\n",
    "\n",
    "criterion = nn.CrossEntropyLoss()\n",
    "optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Trains `Net` model for a very small number of epochs. The training code snippet is copied from the tutorial mentioned above. \n",
    "In order to avoid training the model every time from scratch, we save a pretrained version of the model in `models` folder and load it from there. https://github.com/pytorch/captum/blob/master/tutorials/models/cifar_torchvision.pt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Using existing trained model\n"
     ]
    }
   ],
   "source": [
    "USE_PRETRAINED_MODEL = True\n",
    "\n",
    "if USE_PRETRAINED_MODEL:\n",
    "    print(\"Using existing trained model\")\n",
    "    net.load_state_dict(torch.load('models/cifar_torchvision.pt'))\n",
    "else:\n",
    "    for epoch in range(5):  # loop over the dataset multiple times\n",
    "\n",
    "        running_loss = 0.0\n",
    "        for i, data in enumerate(trainloader, 0):\n",
    "            # get the inputs\n",
    "            inputs, labels = data\n",
    "            # zero the parameter gradients\n",
    "            optimizer.zero_grad()\n",
    "\n",
    "            # forward + backward + optimize\n",
    "            outputs = net(inputs)\n",
    "            loss = criterion(outputs, labels)\n",
    "            loss.backward()\n",
    "            optimizer.step()\n",
    "\n",
    "            # print statistics\n",
    "            running_loss += loss.item()\n",
    "            if i % 2000 == 1999:    # print every 2000 mini-batches\n",
    "                print('[%d, %5d] loss: %.3f' %\n",
    "                      (epoch + 1, i + 1, running_loss / 2000))\n",
    "                running_loss = 0.0\n",
    "\n",
    "    print('Finished Training')\n",
    "    torch.save(net.state_dict(), 'models/cifar_torchvision.pt')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the cell below we load some images from the test dataset and perform predictions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GroundTruth:    cat  ship  ship plane\n",
      "Predicted:    cat  ship  ship  ship\n"
     ]
    }
   ],
   "source": [
    "\n",
    "def imshow(img):\n",
    "    img = img / 2 + 0.5     # unnormalize\n",
    "    npimg = img.numpy()\n",
    "    plt.imshow(np.transpose(npimg, (1, 2, 0)))\n",
    "    plt.show()\n",
    "\n",
    "dataiter = iter(testloader)\n",
    "images, labels = dataiter.next()\n",
    "\n",
    "# print images\n",
    "imshow(torchvision.utils.make_grid(images))\n",
    "print('GroundTruth: ', ' '.join('%5s' % classes[labels[j]] for j in range(4)))\n",
    "\n",
    "\n",
    "outputs = net(images)\n",
    "\n",
    "_, predicted = torch.max(outputs, 1)\n",
    "\n",
    "print('Predicted: ', ' '.join('%5s' % classes[predicted[j]]\n",
    "                              for j in range(4)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's choose a test image at index `ind` and apply some of our attribution algorithms on it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "ind = 3\n",
    "\n",
    "input = images[ind].unsqueeze(0)\n",
    "input.requires_grad = True"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Sets model to eval mode for interpretation purposes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Net(\n",
       "  (conv1): Conv2d(3, 6, kernel_size=(5, 5), stride=(1, 1))\n",
       "  (pool1): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
       "  (pool2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
       "  (conv2): Conv2d(6, 16, kernel_size=(5, 5), stride=(1, 1))\n",
       "  (fc1): Linear(in_features=400, out_features=120, bias=True)\n",
       "  (fc2): Linear(in_features=120, out_features=84, bias=True)\n",
       "  (fc3): Linear(in_features=84, out_features=10, bias=True)\n",
       "  (relu1): ReLU()\n",
       "  (relu2): ReLU()\n",
       "  (relu3): ReLU()\n",
       "  (relu4): ReLU()\n",
       ")"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "net.eval()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A generic function that will be used for calling `attribute` on attribution algorithm defined in input."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def attribute_image_features(algorithm, input, **kwargs):\n",
    "    net.zero_grad()\n",
    "    tensor_attributions = algorithm.attribute(input,\n",
    "                                              target=labels[ind],\n",
    "                                              **kwargs\n",
    "                                             )\n",
    "    \n",
    "    return tensor_attributions\n",
    "        "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Computes gradients with respect to class `ind` and transposes them for visualization purposes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "saliency = Saliency(net)\n",
    "grads = saliency.attribute(input, target=labels[ind].item())\n",
    "grads = np.transpose(grads.squeeze().cpu().detach().numpy(), (1, 2, 0))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Applies integrated gradients attribution algorithm on test image. Integrated Gradients computes the integral of the gradients of the output prediction for the class index `ind` with respect to the input image pixels. More details about integrated gradients can be found in the original paper: https://arxiv.org/abs/1703.01365"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Approximation delta:  tensor([0.0243])\n"
     ]
    }
   ],
   "source": [
    "ig = IntegratedGradients(net)\n",
    "attr_ig, delta = attribute_image_features(ig, input, baselines=input * 0, return_convergence_delta=True)\n",
    "attr_ig = np.transpose(attr_ig.squeeze().cpu().detach().numpy(), (1, 2, 0))\n",
    "print('Approximation delta: ', abs(delta))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Below we demonstrate how to use integrated gradients and noise tunnel with smoothgrad square option on the test image. Noise tunnel with `smoothgrad square` option adds gaussian noise with a standard deviation of `stdevs=0.2` to the input image `nt_samples` times, computes the attributions for `nt_samples` images and returns the mean of the squared attributions across `nt_samples` images."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "ig = IntegratedGradients(net)\n",
    "nt = NoiseTunnel(ig)\n",
    "attr_ig_nt = attribute_image_features(nt, input, baselines=input * 0, nt_type='smoothgrad_sq',\n",
    "                                      nt_samples=100, stdevs=0.2)\n",
    "attr_ig_nt = np.transpose(attr_ig_nt.squeeze(0).cpu().detach().numpy(), (1, 2, 0))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Applies DeepLift on test image. Deeplift assigns attributions to each input pixel by looking at the differences of output and its reference in terms of the differences of the input from the reference."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "dl = DeepLift(net)\n",
    "attr_dl = attribute_image_features(dl, input, baselines=input * 0)\n",
    "attr_dl = np.transpose(attr_dl.squeeze(0).cpu().detach().numpy(), (1, 2, 0))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the cell below we will visualize the attributions for `Saliency Maps`, `DeepLift`, `Integrated Gradients` and `Integrated Gradients with SmoothGrad`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Original Image\n",
      "Predicted: ship  Probability: 0.668495774269104\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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xXrvq98bHTP4rb7igPHj8RZB48/42uJ09sfb4oyOjblibXRcrB+cBRCdZrwd1Gyn6YvlaPUUbyrTW5zBAkAiJFgASIQECwCJkGABIBESLAAkQoIFgERIsACQCAkWABIhwQJAIklbxijSMsYdxlF/YYPxVjCSZO12fH9PPeWKpcsvjw55sh1v1SFJO160IzrmgnFfW5zS+ng11B8f/UtXrLfteEN0zA3OarXDW0ejYy4e9LWysS0j0TEP7H/MFesNe+LnGR96yZtdsSpXXRUdU+3zVTnVSvEWKIdPHHbF0hu/LzrkAmc66J+KtxEqOdrKSJKti7f+mW/O+2K143lifsbXfqZXOIMFgERIsACQCAkWABIhwQJAIiRYAEiEBAsAiZBgASAREiwAJJK0ZUyjuXKrh/acrxXEkdkj0TEPTB10xWq14xfrX7bzMles2kwjOmbIcfGzJNUOxi/ePlKvu2LNOi4+v37b9a5YFxw5Fh/0kpe4Yh1vxosu6s62JZOTM9ExVw3GL/qXpPENB6Jjhl/9alesO/d+KTpm44CvmGKwFi+eqVR9L+Gherz1z3yr7Io15SnWmZhwxSrPxXs9lZ0FSxVHK5tWj4qfvDiDBYBESLAAkAgJFgASIcECQCIkWABIhAQLAImQYAEgERIsACRCggWARJJVcs3OzurBhx5acUwndFyxPNUqzUjV2LMchRx3te5yhbJOPJi3bqTZileYhY5vvUrleEVOy7E/SfqL6T3RMRv2xMdIUrmvLzpmZixe0SZJ/f390THBzBXLU92nR1Y+lhcMh+HomOaM71idKMWroWrOc6S5Snxdzble5ji+gvf1WHGkIOexWq7GW/HMO6rQeokzWABIhAQLAImQYAEgERIsACRCggWAREiwAJAICRYAEiHBAkAiyQoNzExVx4W/vmDxIeW6r91FueQY52wrYY4L/4MzlqeEwBwtMSRfcUPHecH1unXrHPvrXRuOUg87egTnY/QUqQTzTaxk8eeo3fLNKzgKWWZdkaSyozjAW2jgeg05zTtay3Rm4u2BJKnlKEhyPo09wxksACRCggWAREiwAJAICRYAEiHBAkAiJFgASIQECwCJkGABIBESLAAkkqySS5LakUqaZqPhilNxVISZs2KqbfH2E21na5aGY/6udiTytZ/pOOfVnp+PjnFXmDmqoTreViOO53G26atN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\n",
      "text/plain": [
       "<Figure size 432x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "print('Original Image')\n",
    "print('Predicted:', classes[predicted[ind]], \n",
    "      ' Probability:', torch.max(F.softmax(outputs, 1)).item())\n",
    "\n",
    "original_image = np.transpose((images[ind].cpu().detach().numpy() / 2) + 0.5, (1, 2, 0))\n",
    "\n",
    "_ = viz.visualize_image_attr(None, original_image, \n",
    "                      method=\"original_image\", title=\"Original Image\")\n",
    "\n",
    "_ = viz.visualize_image_attr(grads, original_image, method=\"blended_heat_map\", sign=\"absolute_value\",\n",
    "                          show_colorbar=True, title=\"Overlayed Gradient Magnitudes\")\n",
    "\n",
    "_ = viz.visualize_image_attr(attr_ig, original_image, method=\"blended_heat_map\",sign=\"all\",\n",
    "                          show_colorbar=True, title=\"Overlayed Integrated Gradients\")\n",
    "\n",
    "_ = viz.visualize_image_attr(attr_ig_nt, original_image, method=\"blended_heat_map\", sign=\"absolute_value\", \n",
    "                             outlier_perc=10, show_colorbar=True, \n",
    "                             title=\"Overlayed Integrated Gradients \\n with SmoothGrad Squared\")\n",
    "\n",
    "_ = viz.visualize_image_attr(attr_dl, original_image, method=\"blended_heat_map\",sign=\"all\",show_colorbar=True, \n",
    "                          title=\"Overlayed DeepLift\")\n",
    "\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
